library(tidyverse)
## Loading tidyverse: ggplot2
## Loading tidyverse: tibble
## Loading tidyverse: tidyr
## Loading tidyverse: readr
## Loading tidyverse: purrr
## Loading tidyverse: dplyr
## Conflicts with tidy packages ----------------------------------------------
## filter(): dplyr, stats
## lag(): dplyr, stats
library(knitr)
knitr::opts_chunk$set(
comment = "#>",
collapse = TRUE,
fig.align = "center"
)
comma <- function(x) format(x, digits = 2, big.mark = ",")
theme_set(theme_minimal())
Es bien sabido que el otorgamiento de créditos es uno de los negocios más rentables para los bancos, es por ello que estos asignan mucho presupuesto a la generación de campañas para la colocación de estos dirigidas a clientes y no clientes de tal modo que el objetivo, en el primer caso, además de acrecentar el negocio también es incrementar la fildelidad del cliente con el banco y en el segundo caso hablamos de atraer nuevos clientes con ofertas crediticias atractivas. Entonces, para poder hacer una selección óptima tenemos que encontrar las características más importantes,de los clientes, relacionadas con la aceptación de un préstamo crediticio, además tomar en cuenta que sea solvente para poder pagarlo, de tal modo que podamos jerarquizar a cada uno de ellos con respecto a la posibilidad de que acepten la oferta y con ello lograr que la campaña sea exitosa en términos de tasa de aceptación y de costos. Dado lo anterior se plantean 8 preguntas buscando esas caraterísticas mencionadas,
la pregunta 1. busca saber quienes son los clientes que contratan las ofertas
la pregunta 2.- trata de ver una diferencia entre las poblaciones de clientes que responden y no.
la pregunta 3. trata de validar si hace sentido las carácteristicas de un grupo que se comporta distinto a los demás.
la pregunta 4- tratamos de ver que tan diferente son los comportamientos de los clientes en un banco vs. los del país para entender si podemos pensar de la misma forma en términos económicos.
la pregunta 5.- trata de identificar si el ciclo de vida de una persona repercute en la necesidad o gusto de responder a una campaña.
la pregunta 6.-es una consecuencia de la 5 para pensar en una variable que discrimine a los clientes que aceptan la oferta vs. los que no.
la pregunta 7.-llevamos la pregunta 6 a términos individuales para probar la relevancia de la variable # de productos.
la pregunta 8.- Ahora con un sumarizado por estado tratamos de buscar variables relevantes para la clasificación de los clientes y su parecido con lo que conocemos a nivel país.
La base es una muestra aleatoria de los clientes de un banco a quienes se les ha hecho una oferta de préstamos personales(créditos) a lo largo de un año, estas campañas se lanzaron por trimestre, no se cuenta con los meses de estas, el objetivo de la base es para clasificar quienes son los cientes que aceptan las ofertas. En General la base muestra variables financieras de los clientes casi todas vistas a 12,6,3 o 1 mes atrás como por ejemplo saldos de los clientes,gastos promedio, saldos de algunos otros créditos, estimaciones anuales de ingresos, etc y como variables categóricas se cuenta con datos como sexo, estado civil, estado de la república donde vive el cliente,clasificación del ciclo de vida de cliente, Ocupación etc. En particular la variable contrata es una variabe binaria que identifica aquellos clientes que aceptaron el préstamo con valor 1 0 en otro caso.
se anexa el layout de variables con su descripción por el número de variables sólo se deja parte d este que describe las variables que seusan en el análisis.
lay<- read_delim("/home/abraham/layout_cons.csv", ",",
escape_double = FALSE, trim_ws = TRUE)
#> Parsed with column specification:
#> cols(
#> Variable = col_character(),
#> Descripcion = col_character(),
#> `Registros no nulos` = col_integer(),
#> `Tipo de dato` = col_character(),
#> `%no nulos` = col_double()
#> )
kable(lay)
| Variable | Descripcion | Registros no nulos | Tipo de dato | %no nulos |
|---|---|---|---|---|
| id2 | ID | 176330 | int64 | 100.0 |
| IM_MAX_SDO_MEDIO_12M | saldo máximo en los últimos 12 meses | 176330 | float64 | 100.0 |
| IM_PROM_HIPOTECA_12M | importe promedio de pagos de hipoteca en los últimos 12 meses | 176330 | float64 | 100.0 |
| IM_PROM_PREST_NOM_12M | importe promedio mensual de préstamos de nómina en los últimos 12 meses | 176330 | float64 | 100.0 |
| IM_PROM_AUTO_12M | importe promedio de pagos de crédito auto en los últimos 12 meses | 176330 | float64 | 100.0 |
| IM_PROM_PPIS_12M | importe promedio mensual de ppis en los últimos 12 meses | 176330 | float64 | 100.0 |
| IM_PROM_OTRO_12M | importe promedio mensual de otros productos en los últimos 12 meses | 176330 | float64 | 100.0 |
| IM_PROM_CARTERA_12M | promedio del saldo de créditos de los últimos 12 meses | 176330 | float64 | 100.0 |
| IM_PROM_SDO_CORTE_12M | promedio mensual de saldos al corte de los últimos 12 meses | 176330 | float64 | 100.0 |
| IM_PROM_SDO_MEDIO_12M | promedio mensual de saldos en los últimos 12 meses | 176330 | float64 | 100.0 |
| IM_PROM_VISTA_12M | saldo promedio de captacion de los últimos 12 meses | 176330 | float64 | 100.0 |
| IM_PROM_PLAZO_12M | importe promedio mensual en plazos en los últimos 12 meses | 176330 | float64 | 100.0 |
| IM_PROM_FONDO_RF_12M | importe promedio del saldo en fondos de renta fija de los últimos 12 meses | 176330 | float64 | 100.0 |
| IM_PROM_FONDO_RV_12M | importe promedio del saldo en fondos de renta variable de los últimos 12 meses | 176330 | float64 | 100.0 |
| IM_PROM_FONDOS_AES_12M | importe promedio de saldos de fondos avanzados ,esenciales y selectos | 176330 | float64 | 100.0 |
| IM_PROM_MERCADOS_12M | importe promedio de sados en productos de mercados cap, div, in | 176330 | float64 | 100.0 |
| IM_PROM_ACTIVO_12M | importe promedio mensual de pagos a créditos en los últimos 12 meses | 176330 | float64 | 100.0 |
| IM_PROM_VISTA_6M | saldo promedio de captacion de los últimos 6 meses | 176330 | float64 | 100.0 |
| IM_PROM_PREST_CONSUMO_6M | importe promedio mensual de préstamos al consumo en los últimos 6 meses | 176330 | float64 | 100.0 |
| IM_PROM_SDO_CORTE_3M | promedio mensual de saldos al corte de los últimos 3 meses | 176330 | float64 | 100.0 |
| IM_SUM_SDO_CORTE_3M | suma de saldos a la fecha de corte de los últimos 3 meses | 44634 | float64 | 25.3 |
| TO_MISS_SDO_CORTE_3M | número de veces que no se ha reportado el saldo al corte en los últimos 3 meses | 176239 | float64 | 99.9 |
| IM_PROM_SDO_MEDIO_3M | promedio mensual de saldos en los últimos 3 meses | 176330 | float64 | 100.0 |
| IM_PROM_VISTA_3M | saldo promedio de captacion de los últimos 3 meses | 176330 | float64 | 100.0 |
| IM_PROM_NOMINA_3M | importe promedio de depósitos e nómina en los últimos 3 meses | 176330 | float64 | 100.0 |
| IM_PROM_PREST_CONSUMO_3M | importe promedio mensual de préstamos al consumo en los últimos 3 meses | 18554 | float64 | 10.5 |
| IM_SUM_FONDOS_AES_3M | suma de saldo promedio de fondos AES en los últimos 3 meses | 2870 | float64 | 1.6 |
| TO_MISS_FONDOS_AES_3M | Número de veces que no se ha reportado el saldo de fondos AES en los últimos 3 meses | 176239 | float64 | 99.9 |
| IM_SUM_SDO_MEDIO_3M | suma de saldos medios captación mensuales de los últimos 3 meses | 176239 | float64 | 99.9 |
| TO_MISS_SDO_MEDIO_3M | número de veces que no se ha reportado el saldo medio en los últimos 3 meses | 176239 | float64 | 99.9 |
| IM_SUM_ACTIVO_TOTAL_3M | suma de saldos de todos los créditos en los últimos 3 meses | 47476 | float64 | 26.9 |
| TO_MISS_ACTIVO_TOTAL_3M | número de veces que el cte ha estado activo en los últimos 3 meses | 176239 | float64 | 99.9 |
| IM_PROM_SDO_CORTE_1M | promedio mensual de saldos al corte del último mes | 176330 | float64 | 100.0 |
| IM_PROM_SDO_MEDIO_1M | promedio mensual de saldos en el último mes | 176330 | float64 | 100.0 |
| IM_PROM_ACTIVO_1M | importe promedio mensual de pagos a créditos en el último mes | 176330 | float64 | 100.0 |
| IM_PROM_PREST_CONSUMO_1M | importe promedio mensual de préstamos al consumo en el último mes | 176330 | float64 | 100.0 |
| IM_SUM_SDO_CORTE_1M | suma de saldos a la fecha de corte del último mes | 44014 | float64 | 25.0 |
| TO_MISS_SDO_CORTE_1M | se ha reportado el saldo al corte n el último mes | 173511 | float64 | 98.4 |
| IM_SUM_SDO_MEDIO_1M | suma de saldos medios captación mensuales de los último mes | 173511 | float64 | 98.4 |
| TO_MISS_TO_SDO_MEDIO_1M | se ha reportado el saldo medio en el último mes | 173511 | float64 | 98.4 |
| IM_SUM_IM_SDO_CORTE_2MA | saldo al corte 2 meses antes | 43716 | float64 | 24.8 |
| TO_MISS_TO_SDO_CORTE_2MA | saldo al corte fue reportado hace 2 meses | 169355 | float64 | 96.0 |
| IM_SUM_IM_SDO_MEDIO_2MA | saldo medio 2 meses antes | 169355 | float64 | 96.0 |
| TO_MISS_TO_SDO_MEDIO_2MA | saldo medio fue reportado hace 2 meses | 169355 | float64 | 96.0 |
| IM_COC_IM_FONDOS_AES_CAP_0_2 | 0 | 176330 | float64 | 100.0 |
| IM_COC_IM_SDO_CORTE_ACTIVO_0_2 | 0 | 176330 | float64 | 100.0 |
| IM_DELTA_IM_SDO_CORTE_0_2 | delta de saldo al corte actual vs. Hace 2 meses | 176330 | float64 | 100.0 |
| IM_DELTA_IM_SDO_MEDIO_0_2 | delta de saldo medio actual vs. Hace 2 meses | 176330 | float64 | 100.0 |
| IM_PROM_IM_CARGOS_12M | importe promedio de cargos de los últimos 12 meses | 176330 | float64 | 100.0 |
| IM_PROM_IM_CARGOS_6M | importe promedio de cargos de los últimos 6 meses | 176330 | float64 | 100.0 |
| IM_PROM_IM_CARGOS_3M | importe promedio de cargos de los últimos 3 meses | 176330 | float64 | 100.0 |
| IM_PROM_IM_CARGOS_1M | importe promedio de cargos de los último mes | 176330 | float64 | 100.0 |
| TO_PROM_TO_CARGOS_6M | promedio del numero de cargos en los últimos 6 meses | 176330 | float64 | 100.0 |
| TO_PROM_TO_CARGOS_3M | promedio del numero de cargos en los últimos 3 meses | 176330 | float64 | 100.0 |
| IM_PROM_IM_OPERS_TARJ_TDC_1M | importe promedio mensual de pagos con tdc en el último mes | 176330 | float64 | 100.0 |
| IM_PROM_IM_OPERS_TARJ_TDC_3M | importe promedio mensual de pagos con tdc en los últimos 3 meses | 176330 | float64 | 100.0 |
| TO_PROM_TO_OPERS_TARJ_TDC_3M | número de transacciones promedio mensuales hechas con TDC en los últimos 3 meses | 176330 | float64 | 100.0 |
| IM_PROM_IM_OPERS_TARJ_TDC_6M | importe promedio mensual de pagos con tdc en los últimos 6 meses | 176330 | float64 | 100.0 |
| TO_FONDOS_AES | número de fondos /avanzados/esenciales y selectos | 176330 | int64 | 100.0 |
| TO_MERCADOS | número de productos de mercado de capitales/divisas/dinero | 176330 | int64 | 100.0 |
| TO_PLAZO | cuenta con algún producto de inversión | 176330 | int64 | 100.0 |
| TO_CTA_HIPOTECA | tiene algún crédito hipotecario vigente | 176330 | int64 | 100.0 |
| TO_FONDO_RF | tiene fondos de renta fja | 176330 | int64 | 100.0 |
| TO_FONDO_RV | tiene fondos de renta variable | 176330 | int64 | 100.0 |
| TO_PREST_CONSUMO | númeo de préstamos contratados en el último año | 176330 | int64 | 100.0 |
| TO_DELTA_TO_PREST_CONSUMO_0_2 | delta del número de créditos al consumo en los último 3 meses | 176330 | float64 | 100.0 |
| NU_REGULARIDAD_TDC_ULT_6M | Frecuencia mensual de uso de la tdc en los últimos 6 ,meses | 176330 | int64 | 100.0 |
| IM_PROM_CUOTA_TOT_ULT_1M | importe promedio de cuota de tdc pagada en los último mes | 19945 | float64 | 11.3 |
| IM_PROM_CUOTA_TOT_ULT_3M | importe promedio de cuota de tdc pagada en los últimos 3 meses | 21206 | float64 | 12.0 |
| NU_VINC_BANCOMER | índice de fidelidad | 176330 | int64 | 100.0 |
| NU_VINC_COGNODATA | Estimación de la fidelidad del cliente | 176330 | int64 | 100.0 |
| TO_IR_AJUSTADO | estimación de ingresos anuales | 176330 | float64 | 100.0 |
| TP_NIVEL_IR_AJUSTADO | nivel de ingresos anuales estimados | 176330 | object | 100.0 |
| IM_PROM_IM_NIBT_TOTAL_12M | rentabilidad promedio mensual del cte. en el útimo año | 176330 | float64 | 100.0 |
| TO_RANGO_EDAD | Rango de edad del cliente | 176330 | int64 | 100.0 |
| IM_PROM_GASTOS_1M | importe promedio de gastos en el último mes | 176330 | float64 | 100.0 |
| IM_PROM_GASTOS_3M | importe promedio de gastos en los últimos 3 meses | 176330 | float64 | 100.0 |
| TP_SEGMENTO_FINAL2 | Segmento de ciclo de vida | 176330 | object | 100.0 |
| TP_SUBSEGMENTO | clasificación del cliente | 176330 | object | 100.0 |
| TO_NECESIDAD_FINAN_CAP_1M | Ratio de captación vs. Créditos en el último mes | 176330 | float64 | 100.0 |
| TO_NECESIDAD_FINAN_CAP_3M | Ratio de captación vs. Créditos en los últimos 3 meses | 176330 | float64 | 100.0 |
| TO_DELTA_NEC_FIN_CAP_0_2 | delta de necesidad financiera con respecto a 3 meses anteriores | 176330 | float64 | 100.0 |
| TP_PERSONA | Persona Física o moral | 176330 | object | 100.0 |
| TP_DOMICILIO | Tipo de domicilio | 170545 | object | 96.7 |
| CD_ESTADO | Estado del Cliente | 172866 | object | 98.0 |
| CD_EDO_CIVIL | estado civil | 170208 | object | 96.5 |
| CD_SEGMENTACION | segmento operativo | 176327 | object | 100.0 |
| CD_SEXO | sexo | 175458 | object | 99.5 |
| CD_OCUPACION | Ocupación | 168222 | object | 95.4 |
| CD_RESIDENCIA | País de Residencia | 174903 | object | 99.2 |
| TP_VIVIENDA_SEPO | tipo de vivienda | 71989 | object | 40.8 |
| contrata | variable de respuesta: 1 contrata y 0. e.o.c | 176330 | int64 | 100.0 |
******rangos******** TO_RANGO_EDAD :
if edad, <= 37 then rango_edad = 0; else if coalesce(edad,0) > 37 and coalesce(edad,0) <= 44 then rango_edad = 1; else if coalesce(edad,0) > 44 and coalesce(edad,0) <= 52 then rango_edad = 2; else if coalesce(edad,0) > 52 and coalesce(edad,0) <= 62 then rango_edad = 3; else rango_edad = 4;
TP_NIVEL_IR_AJUSTADO
case when 0 < ingreso_anual <= 50000.0 then ‘1_RENTA BAJA’ when ingreso_anual > 50000.0 and ingreso_anual <= 120000.0 then ‘2_RENTA MEDIA BAJA’ when ingreso_anual > 120000.0 and ingreso_anual <= 250000.0 then ‘3_RENTA MEDIA ALTA’ when ingreso_anual > 250000.0 and ingreso_anual < 450000.0 then ‘4_RENTA ALTA’ when ingreso_anual >= 450000.0 then ‘5_RENTA MUY ALTA’
Se cuenta con un dataset de 176,330 registros(ctes.) con 92 campos o variables donde existe una variable de identificación de clientes (id2) y una variable respuesta a modelar que es contrata la cual es una variable binaria donde 1 significa que el cte. acepta contratar un préstamo y 0 en otro caso.
Se cuenta con un dataset de 176,330 registros(ctes.) con 92 campos o variables donde existe una variable de identificación de clientes (id2) y una variable respuesta a modelar que es ‘contrata’ la cual es una variable binaria donde 1 significa que el cte. acepta contratar un préstamo y 0 en otro caso. La tasa de aceptación general es de 1.17%
cred<- read_delim("/home/abraham/multivsamp.csv", ";",
escape_double = FALSE, trim_ws = TRUE)
#> Parsed with column specification:
#> cols(
#> .default = col_double(),
#> id2 = col_integer(),
#> IM_PROM_OTRO_12M = col_integer(),
#> IM_PROM_CARTERA_12M = col_integer(),
#> IM_PROM_MERCADOS_12M = col_integer(),
#> TO_MISS_SDO_CORTE_3M = col_integer(),
#> TO_MISS_FONDOS_AES_3M = col_integer(),
#> TO_MISS_SDO_MEDIO_3M = col_integer(),
#> TO_MISS_ACTIVO_TOTAL_3M = col_integer(),
#> TO_MISS_SDO_CORTE_1M = col_integer(),
#> TO_MISS_TO_SDO_MEDIO_1M = col_integer(),
#> TO_MISS_TO_SDO_CORTE_2MA = col_integer(),
#> TO_MISS_TO_SDO_MEDIO_2MA = col_integer(),
#> TO_FONDOS_AES = col_integer(),
#> TO_MERCADOS = col_integer(),
#> TO_PLAZO = col_integer(),
#> TO_CTA_HIPOTECA = col_integer(),
#> TO_FONDO_RF = col_integer(),
#> TO_FONDO_RV = col_integer(),
#> TO_PREST_CONSUMO = col_integer(),
#> NU_REGULARIDAD_TDC_ULT_6M = col_integer()
#> # ... with 16 more columns
#> )
#> See spec(...) for full column specifications.
#> Warning in rbind(names(probs), probs_f): number of columns of result is not
#> a multiple of vector length (arg 1)
#> Warning: 442 parsing failures.
#> row # A tibble: 5 x 5 col row col expected actual expected <int> <chr> <chr> <chr> actual 1 1435 IM_PROM_MERCADOS_12M no trailing characters .82583 file 2 1781 IM_PROM_OTRO_12M no trailing characters .89 row 3 2053 IM_PROM_MERCADOS_12M no trailing characters .30083 col 4 2726 IM_PROM_OTRO_12M no trailing characters .12 expected 5 2726 IM_PROM_CARTERA_12M no trailing characters .866667 actual # ... with 1 more variables: file <chr>
#> ... ................. ... ........................................................... ........ ........................................................... ...... ........................................................... .... ........................................................... ... ........................................................... ... ........................................................... ........ ........................................................... ...... .......................................
#> See problems(...) for more details.
datana<-is.na(cred)
cred[datana]<-0
cred
#> # A tibble: 176,330 x 92
#> id2 IM_MAX_SDO_MEDIO_12M IM_PROM_HIPOTECA_12M IM_PROM_PREST_NOM_12M
#> <int> <dbl> <dbl> <dbl>
#> 1 1 1100.00 0 0.000
#> 2 5 22836.13 0 2445.065
#> 3 16 5936.92 0 90829.800
#> 4 17 541013.76 0 0.000
#> 5 62 5059.81 0 0.000
#> 6 64 39304.27 0 63344.652
#> 7 68 677.29 0 0.000
#> 8 76 0.00 0 0.000
#> 9 79 66232.62 0 0.000
#> 10 100 85668.20 0 0.000
#> # ... with 176,320 more rows, and 88 more variables:
#> # IM_PROM_AUTO_12M <dbl>, IM_PROM_PPIS_12M <dbl>,
#> # IM_PROM_OTRO_12M <dbl>, IM_PROM_CARTERA_12M <dbl>,
#> # IM_PROM_SDO_CORTE_12M <dbl>, IM_PROM_SDO_MEDIO_12M <dbl>,
#> # IM_PROM_VISTA_12M <dbl>, IM_PROM_PLAZO_12M <dbl>,
#> # IM_PROM_FONDO_RF_12M <dbl>, IM_PROM_FONDO_RV_12M <dbl>,
#> # IM_PROM_FONDOS_AES_12M <dbl>, IM_PROM_MERCADOS_12M <dbl>,
#> # IM_PROM_ACTIVO_12M <dbl>, IM_PROM_VISTA_6M <dbl>,
#> # IM_PROM_PREST_CONSUMO_6M <dbl>, IM_PROM_SDO_CORTE_3M <dbl>,
#> # IM_SUM_SDO_CORTE_3M <dbl>, TO_MISS_SDO_CORTE_3M <dbl>,
#> # IM_PROM_SDO_MEDIO_3M <dbl>, IM_PROM_VISTA_3M <dbl>,
#> # IM_PROM_NOMINA_3M <dbl>, IM_PROM_PREST_CONSUMO_3M <dbl>,
#> # IM_SUM_FONDOS_AES_3M <dbl>, TO_MISS_FONDOS_AES_3M <dbl>,
#> # IM_SUM_SDO_MEDIO_3M <dbl>, TO_MISS_SDO_MEDIO_3M <dbl>,
#> # IM_SUM_ACTIVO_TOTAL_3M <dbl>, TO_MISS_ACTIVO_TOTAL_3M <dbl>,
#> # IM_PROM_SDO_CORTE_1M <dbl>, IM_PROM_SDO_MEDIO_1M <dbl>,
#> # IM_PROM_ACTIVO_1M <dbl>, IM_PROM_PREST_CONSUMO_1M <dbl>,
#> # IM_SUM_SDO_CORTE_1M <dbl>, TO_MISS_SDO_CORTE_1M <dbl>,
#> # IM_SUM_SDO_MEDIO_1M <dbl>, TO_MISS_TO_SDO_MEDIO_1M <dbl>,
#> # IM_SUM_IM_SDO_CORTE_2MA <dbl>, TO_MISS_TO_SDO_CORTE_2MA <dbl>,
#> # IM_SUM_IM_SDO_MEDIO_2MA <dbl>, TO_MISS_TO_SDO_MEDIO_2MA <dbl>,
#> # IM_COC_IM_FONDOS_AES_CAP_0_2 <dbl>,
#> # IM_COC_IM_SDO_CORTE_ACTIVO_0_2 <dbl>, IM_DELTA_IM_SDO_CORTE_0_2 <dbl>,
#> # IM_DELTA_IM_SDO_MEDIO_0_2 <dbl>, IM_PROM_IM_CARGOS_12M <dbl>,
#> # IM_PROM_IM_CARGOS_6M <dbl>, IM_PROM_IM_CARGOS_3M <dbl>,
#> # IM_PROM_IM_CARGOS_1M <dbl>, TO_PROM_TO_CARGOS_6M <dbl>,
#> # TO_PROM_TO_CARGOS_3M <dbl>, IM_PROM_IM_OPERS_TARJ_TDC_1M <dbl>,
#> # IM_PROM_IM_OPERS_TARJ_TDC_3M <dbl>,
#> # TO_PROM_TO_OPERS_TARJ_TDC_3M <dbl>,
#> # IM_PROM_IM_OPERS_TARJ_TDC_6M <dbl>, TO_FONDOS_AES <int>,
#> # TO_MERCADOS <int>, TO_PLAZO <int>, TO_CTA_HIPOTECA <int>,
#> # TO_FONDO_RF <int>, TO_FONDO_RV <int>, TO_PREST_CONSUMO <int>,
#> # TO_DELTA_TO_PREST_CONSUMO_0_2 <dbl>, NU_REGULARIDAD_TDC_ULT_6M <int>,
#> # IM_PROM_CUOTA_TOT_ULT_1M <dbl>, IM_PROM_CUOTA_TOT_ULT_3M <dbl>,
#> # NU_VINC_BANCOMER <int>, NU_VINC_COGNODATA <int>, TO_IR_AJUSTADO <dbl>,
#> # TP_NIVEL_IR_AJUSTADO <chr>, IM_PROM_IM_NIBT_TOTAL_12M <dbl>,
#> # TO_RANGO_EDAD <int>, IM_PROM_GASTOS_1M <dbl>, IM_PROM_GASTOS_3M <dbl>,
#> # TP_SEGMENTO_FINAL2 <chr>, TP_SUBSEGMENTO <chr>,
#> # TO_NECESIDAD_FINAN_CAP_1M <dbl>, TO_NECESIDAD_FINAN_CAP_3M <dbl>,
#> # TO_DELTA_NEC_FIN_CAP_0_2 <dbl>, TP_PERSONA <lgl>, TP_DOMICILIO <chr>,
#> # CD_ESTADO <chr>, CD_EDO_CIVIL <chr>, CD_SEGMENTACION <chr>,
#> # CD_SEXO <chr>, CD_OCUPACION <chr>, CD_RESIDENCIA <chr>,
#> # TP_VIVIENDA_SEPO <chr>, contrata <int>
Pregunta 1.-Cuál es el Rango de Nivel de ingresos anuales(TP_NIVEL_IR_AJUSTADO) que más aceptaciones de las campañas tiene o más responde a estas campañas y por sexo quién contrata más? hombres o mujeres?
credc<-cred%>%filter(contrata==1)
ggplot(data=credc,aes(x=TP_NIVEL_IR_AJUSTADO,fill=CD_SEXO))+geom_bar(aes(y = ..count../sum(..count..)))+labs(y='percent')
Respuesta 1.-Los clientes que ganan entre 50 y 120 mil pesos anuales son los que más aceptan préstamos poco más del 35% de estos de acuerdo a la distribución por sexo podemos ver que los hombres son los que más aceptan los préstamos.
Pregunta 2.- Una de las hipótesis es que un cliente busca algún tipo de crédito cuando tiene muchos gastos o normalmente tiene un gasto mensual alto recurrente, de acuedo con esta hipótesis Para que segmentos de nivel de ingreso se cumple y para cuales no? Para responder esta pregunta pregunta vamos a usar la variable IM_PROM_IM_CARGOS_12M que significa el importe promedio mensual de cargos o pagos que ha hecho el cliente en el último año.
ggplot(data=cred)+geom_boxplot(aes(x=factor(contrata),y=log(abs(IM_PROM_IM_CARGOS_12M)+1)))+facet_wrap(~TP_NIVEL_IR_AJUSTADO)
Respuesta 2.-Los clientes que ganan más de 450mil pesos anuales (Renta muy alta) no tienen diferencia, en la distribución del gasto promedio mensual que hacen a lo largo de un año, entre los que aceptan o no un préstamo crediticio, es decir esta variable no discrimina entre los que contratan y no los préstamos crediticios para este segmento de nivel de ingresos, podemos ver que para los segmentos con ingresos menores de 450mil anuales sí se cumple la hipótesis planteada.
Pregunta 3.-Dado la respuesta 2 aquellos clientes que tienen ingresos de más de 450mil pesos se entendería que son los clientes con mayores ingresos y mayor liquidez(en términos bancarios esto significa que se tiene más saldo de cuentas de captación que saldos de crédito), para aquellos clientes que aceptan los préstamos está relación es evidente? la edad y el estado civil influyen? si no se da la relación esperada que podemos concluir? Para revisar la liquidez de los clientes vamos a utilizar la variable TO_NECESIDAD_FINAN_CAP_3M que muestra la liquidez del cliene en los últimos 3 meses y la estimación de ingresos numérica vamos a usar TO_IR_AJUSTADO, el estado civil(C,S) casado y soltero y para la edad TO_RANGO_EDAD rangos de edad descritos al principio y sólo analizaremos a aquellos que aceptan las ofertas de préstamos.
library(Hmisc)
#> Loading required package: lattice
#> Loading required package: survival
#> Loading required package: Formula
#>
#> Attaching package: 'Hmisc'
#> The following objects are masked from 'package:dplyr':
#>
#> combine, src, summarize
#> The following objects are masked from 'package:base':
#>
#> format.pval, round.POSIXt, trunc.POSIXt, units
cred5<-cred%>%filter(TP_NIVEL_IR_AJUSTADO=='5_RENTA_MUY_ALTA')%>%filter(CD_EDO_CIVIL %in% c('C','S'))%>%filter(contrata==1)
ggplot(data=cred5,aes(x=log(TO_NECESIDAD_FINAN_CAP_3M+1),y=log((TO_IR_AJUSTADO/4.0)+1)))+geom_point()+geom_smooth(method='lm')+facet_grid(CD_EDO_CIVIL~factor(TO_RANGO_EDAD))
#> Warning in log(TO_NECESIDAD_FINAN_CAP_3M + 1): Se han producido NaNs
#> Warning in log(TO_NECESIDAD_FINAN_CAP_3M + 1): Se han producido NaNs
#> Warning in log(TO_NECESIDAD_FINAN_CAP_3M + 1): Se han producido NaNs
#> Warning: Removed 4 rows containing non-finite values (stat_smooth).
#> Warning: Removed 4 rows containing missing values (geom_point).
Respuesta 3.- Primero los segmentos que muestran una relación positiva de las variables son clientes solteros entre 37 y 44 años así como aquellos solteros de entre 52 y 62 años, los datos más extraños se presentan en clientes casadosde más de 52 años(rangos 3 y 4) donde se puede ver que a mayor liquidez menor es la estimación de ingresos anuales, esto nos lleva a pensar que esta estimación anual quizás no está bien calculada para estos clientes.
Pregunta 4.-Cuales son los estados con mayor estimación de ingresos anuales promedio entre los que contratan y no los créditos, se parece a la realidad del País?
credo<-cred%>%filter(CD_ESTADO!='0')
ggplot(credo,aes(x=CD_ESTADO, y=TO_IR_AJUSTADO,fill=factor(contrata))) + stat_summary(fun.y=mean, geom="bar")+coord_flip()+facet_wrap(~factor(contrata))
Respuesta 4.- Podemos observar, para el caso de los clientes que no contratan, que Nuevo León , Jalisco,Sinaloa y Aguascalientes son los estados con mayor estimación de ingresos promedio, mientras ques estados como Tlaxcala(TL), Querétaro, Baja California y Chiapas son los que menor estimación de ingresos promedio tienen con excpeción de Baja california el resto son estados con niveles socioeconómicos menores que los del norte. Para el caso del universo que acepta la campaña, los estados con mayor promedio de ingreso estimado anual son: Tabasco,Guerrero,Coahuila y DF
Pregunta 5.- Cuál es el número de productos en promedio que se tienen por ciclo de vida, y cual es el porcentaje de contrataciones por cada segmento
library(knitr)
ciclo<-select(cred,TP_SEGMENTO_FINAL2,NU_VINC_COGNODATA,contrata)%>%group_by(TP_SEGMENTO_FINAL2)%>%summarise(prods=mean(NU_VINC_COGNODATA),pct_contrata=mean(contrata)*100)%>%arrange(desc(pct_contrata))
kable(ciclo,caption = '# de Productos y % de contratos por ciclo de vida')
| TP_SEGMENTO_FINAL2 | prods | pct_contrata |
|---|---|---|
| HOGARES CON HIJOS | 4.056717 | 1.9048298 |
| PAREJAS ADULTAS | 2.767143 | 1.4830670 |
| DIVORCIADO | 3.102513 | 1.4758676 |
| PAREJAS SENIOR | 2.693454 | 1.4479638 |
| JOVEN PROFESIONAL | 2.608986 | 1.3198240 |
| PAREJA JOVEN | 2.728391 | 1.2750185 |
| ADULTOS INDEPENDIENTES | 2.261122 | 0.9964919 |
| ADULTO EN PLENITUD | 2.084818 | 0.9515324 |
| SIN SEGMENTO | 1.122197 | 0.9431985 |
| RETIRADOS | 2.056562 | 0.7308548 |
| JOVEN TRABAJADOR | 1.589156 | 0.4306126 |
| JOVEN DESOCUPADO | 1.417655 | 0.2635046 |
| INFANTIL | 1.099584 | 0.0000000 |
| SIN_EDAD | 1.157254 | 0.0000000 |
Respuesta 5.- En este caso podemos observar que el segmento con mayor número de productos en el banco son los hogares con hijos que sigifica que un cliente tiene al menos 1 hijo, y vive en familia, entonces podemos observar que estos tienen en promedio 4 productos en el banco(prods) lo cual hace mucho sentido ya que se entiende que un jefe(a) de familia diversifique más su portafolio de productos, y además también la tasa de contratación de este segmento es la mayor(1.9%), observando la tabla parece que existe una relación positiva entre el número de productos y la tasa de aceptación de la campaña….
Pregunta 6.- Podemos confirmar la relación entre # de productos y tasa de aceptación…
library(plotly)
#>
#> Attaching package: 'plotly'
#> The following object is masked from 'package:Hmisc':
#>
#> subplot
#> The following object is masked from 'package:ggplot2':
#>
#> last_plot
#> The following object is masked from 'package:stats':
#>
#> filter
#> The following object is masked from 'package:graphics':
#>
#> layout
p<-ggplot(data=ciclo,aes(x=prods,y=pct_contrata,color=TP_SEGMENTO_FINAL2))+geom_point(aes(size=1))
ggplotly(p)
#> We recommend that you use the dev version of ggplot2 with `ggplotly()`
#> Install it with: `devtools::install_github('hadley/ggplot2')`
Respuesta 6.- es claro en la gr[afica que existe una relación entre el promedio de productos por segmento y la tasa de aceptación, entonces este es un indicio de que el número de productos puede discriminar a los clientes que aceptana o no los préstamos.
Pregunta 7.-Podemos asegurar que a mayor número de productos tenga un cliente, es más propenso a aceptar un préstamo crediticio?
ggplot(data=cred,aes(x=factor(contrata),y=NU_VINC_COGNODATA))+geom_boxplot()+facet_wrap(~TP_SEGMENTO_FINAL2)
Respuesta 7.-En caso de hacer un modelo para clasificar a los clientes que contratan está variable sería claramente relevante porque casi en todos los segmentos hace diferencia la distribución entre los que contratan y los que no. Claramente los segmentos “SIN_EDAD” e “INFANTIL” no tienen contrataciones y esto se explica por que un cliente menor de edad no puede tener un préstamo de crédito y el segmento que no tiene las edades es porque son en su Mayoría personas Morales entonces estos no pueden contratar préstamos personales para físicos, ahora bien hemos entonces encontrado que podemos trabajar con un subconjunto de la base quitando estos 2 segmentos.
Pregunta 8.- Cuál es el estado de la república con mayor número de préstamos activos promedio hay en el momento que se les ofrece la campaña? es más probable que se acepté un préstamo dado que se tiene uno vigente?,Cuál es la relación entre los ingresos promedio por estado y los gastos promedio mensuales por individuo por estado?,Cuál es la relación de la inactividad de los clientes en los últimos 3 meses y las contrataciones de préstamos por estado?
ocup<-select(cred,CD_ESTADO,NU_VINC_COGNODATA,contrata,TO_IR_AJUSTADO,TO_NECESIDAD_FINAN_CAP_3M,IM_PROM_IM_CARGOS_12M,TO_MISS_ACTIVO_TOTAL_3M,TO_PREST_CONSUMO)%>%group_by(CD_ESTADO)%>%summarise(prods=mean(NU_VINC_COGNODATA),ingresos=mean(TO_IR_AJUSTADO),pct_contrata=mean(contrata)*100,liquidez=mean(TO_NECESIDAD_FINAN_CAP_3M),gastos=mean(IM_PROM_IM_CARGOS_12M),num_prestamos=mean(TO_PREST_CONSUMO),inactividad=mean(TO_MISS_ACTIVO_TOTAL_3M))%>%arrange(desc(pct_contrata))%>%arrange(desc(num_prestamos))%>%filter(CD_ESTADO!=0)
kable(ocup)
| CD_ESTADO | prods | ingresos | pct_contrata | liquidez | gastos | num_prestamos | inactividad |
|---|---|---|---|---|---|---|---|
| TA | 2.766300 | 205482.3 | 1.4587675 | 416.60068 | 17183.941 | 0.2075022 | 2.090801 |
| CA | 2.849534 | 223187.6 | 1.4647137 | 334.44976 | 18239.220 | 0.1970706 | 2.097869 |
| BS | 2.868276 | 220783.9 | 1.3793103 | 401.40687 | 17624.917 | 0.1779310 | 2.095862 |
| VE | 2.575113 | 237294.4 | 1.2345679 | 1400.54355 | 18713.717 | 0.1548710 | 2.147170 |
| OA | 2.448314 | 201188.3 | 1.6672842 | 42881.96170 | 14084.183 | 0.1515376 | 2.158948 |
| EM | 2.761812 | 231615.6 | 1.4247069 | 25177.87173 | 17715.383 | 0.1477006 | 2.034130 |
| HI | 2.543860 | 217243.5 | 1.1601585 | 1915.58903 | 15903.409 | 0.1448783 | 2.153367 |
| CU | 2.504078 | 288670.9 | 1.6310337 | 575.10343 | 24071.758 | 0.1399603 | 2.142605 |
| CH | 2.614344 | 215789.4 | 1.2153372 | 2713.70188 | 18635.711 | 0.1395070 | 2.130264 |
| TM | 2.541985 | 291075.1 | 1.4282197 | 9980.95324 | 22062.328 | 0.1388820 | 2.065747 |
| AG | 2.640737 | 300852.8 | 0.8700102 | 2781.44263 | 24127.982 | 0.1381781 | 2.047083 |
| QU | 2.768670 | 295439.9 | 1.1376896 | 321.66023 | 23411.227 | 0.1368145 | 2.047841 |
| CS | 2.326656 | 193886.2 | 1.2326656 | 766.89651 | 14971.675 | 0.1355932 | 2.261685 |
| SO | 2.487058 | 217885.5 | 1.5411974 | 3380.84069 | 17239.510 | 0.1347560 | 2.226833 |
| SL | 2.613037 | 289182.3 | 0.6588072 | 1330.82649 | 21650.177 | 0.1310680 | 2.056172 |
| NL | 2.754930 | 554169.7 | 1.5354509 | 7538.02938 | 48561.579 | 0.1273521 | 1.927292 |
| DU | 2.287065 | 239946.7 | 1.6330039 | 148.63240 | 18181.732 | 0.1272024 | 2.245810 |
| CO | 2.506506 | 247184.5 | 0.7007007 | 108.57206 | 21374.205 | 0.1271271 | 2.167167 |
| BN | 2.571551 | 174233.0 | 1.2025425 | 8590.21628 | 12850.926 | 0.1266105 | 2.157189 |
| PU | 2.500205 | 213592.4 | 1.0814511 | 5062.60126 | 16023.825 | 0.1245722 | 2.216290 |
| MO | 2.637072 | 299525.0 | 1.5591165 | 10574.06096 | 24939.224 | 0.1229970 | 2.104807 |
| QR | 2.424872 | 155941.6 | 1.3287905 | -52.78317 | 11151.717 | 0.1168654 | 2.201363 |
| GU | 2.492115 | 281318.6 | 1.0982822 | 22722.33365 | 21919.445 | 0.1146156 | 2.154886 |
| ZA | 2.300317 | 215224.3 | 1.0402533 | 193.23821 | 16037.017 | 0.1135233 | 2.231117 |
| JA | 2.683531 | 553094.1 | 1.0894709 | 2420.51306 | 50908.256 | 0.1128274 | 2.077532 |
| GO | 2.190204 | 175580.4 | 0.8112981 | 824.10488 | 11705.042 | 0.1114784 | 2.252103 |
| YU | 2.254312 | 192401.9 | 1.0483598 | 3707.08671 | 12748.395 | 0.1099087 | 2.220494 |
| SI | 2.533035 | 356204.2 | 0.9291122 | 846.72308 | 33276.606 | 0.1018582 | 2.109773 |
| DF | 2.480525 | 276192.1 | 0.8572972 | 3004.71183 | 22330.593 | 0.1015593 | 2.153200 |
| MI | 2.458737 | 263825.0 | 0.9397944 | 2821.47952 | 22037.793 | 0.1013216 | 2.188987 |
| TL | 2.068603 | 143855.5 | 0.7416564 | 435.95734 | 9858.343 | 0.0988875 | 2.359085 |
| Respuestas 8 | .- Como vem | os n la tab | la Tabasco es e | l estado con m | ás préstamos | vigentes con 0. | 2 préstamos en promedio por cliente. |
es más probable que se acepté un préstamo dado que se tiene uno vigente?
g<-ggplot(data=ocup,aes(x=num_prestamos,y=pct_contrata))+geom_point(aes(color=CD_ESTADO))+geom_smooth(method='loess')
ggplotly(g)
#> We recommend that you use the dev version of ggplot2 with `ggplotly()`
#> Install it with: `devtools::install_github('hadley/ggplot2')`
No existe una relación muy clara que a mayor número de préstamos se dé una mayor aceptación del crédito, no hay una relacion lineal clara en los datos
Cuál es la relación entre los ingresos promedio por estado y los gastos promedio mensuales por individuo por estado?
g<-ggplot(data=ocup,aes(x=ingresos,y=gastos))+geom_point(aes(color=CD_ESTADO))+geom_smooth(method='lm')
ggplotly(g)
#> We recommend that you use the dev version of ggplot2 with `ggplotly()`
#> Install it with: `devtools::install_github('hadley/ggplot2')`
La relación es casi perfecta el que más gana más gasta
Cuál es la relación de la inactividad de los clientes en los últimos 3 meses y las contrataciones de préstamos por estado?
g<-ggplot(data=ocup,aes(x=inactividad,y=pct_contrata))+geom_point(aes(color=CD_ESTADO))+geom_smooth(method='loess')
ggplotly(g)
#> We recommend that you use the dev version of ggplot2 with `ggplotly()`
#> Install it with: `devtools::install_github('hadley/ggplot2')`
Aunque no es muy claro, parece que la tendencia se carga más a pensar que a mayor inactividad hay menor % de contrataciones por estado.